Data storage system with extremely large capacity have become commonplace and are typically structured as Redundant Arrays of Inexpensive Disks, or RAID. The fundamental structure of a RAID storage system is a collection of multiple disks (also referred to as drives) that are organized as an array in which read and write operations are performed under management of a RAID controller. If a disk drive in the array fails, causing an erasure, then the RAID controller can rebuild the erased data from the remaining disks. The RAID storage system stores data that it receives data from an external machine, referred to as a host computer, and retrieves data for delivery to a host computer, upon request. To the host computer, the RAID storage system appears to be a single logical hard disk.
The RAID controller manages the disks of the array according to configuration data received from a user, typically through a host computer. The configuration data includes, for example, the RAID level, how many disks are in the array, the drive identification names or numbers, the location of the data, and any other data required by the RAID controller to configure and manage the read, write, and rebuilding operations for the RAID array.
The disks in a RAID storage system include disks that contain data that a user wants to store and retrieve, called systematic data, and also include disks that contain redundancy information, called parity data, from which the RAID controller can rebuild any failed disks and recover from an erasure. The parity data is typically generated as a linear combination of data from the systematic disks, comprising redundancy values computed by calculating a function of predetermined word sizes from the data of the systematic disks. The parity data is stored on the parity disks. If a systematic disk fails, the data on the failed disk can be regenerated from the data stored on the parity drives and the remaining systematic disks. If a parity disk fails, its parity data can be reconstructed from the data stored on the systematic disks. Various codes have been proposed to provide efficient rebuilding of data upon suffering an erasure, but many conventional codes require relatively complicated or time-consuming parity computations. For example, Maximum Distance Separable (MDS) codes are proposed, as described further below, and provide improved storage efficiency.
Efficient codes are becoming more and more important as the size of RAID storage systems increases. For example, RAID storage systems may be structured so that the storage disks of the array are, in fact, nodes of a network, and not just single disk drives. That is, a RAID array may be comprised of network nodes, each of which may comprise a RAID array. Such high-density data storage systems urgently need more efficient storage codes. It is desired to improve the efficiency of RAID codes for read and write operations and rebuilding operations in RAID arrays.
Other features and advantages of the present disclosure should be apparent from the following description of exemplary embodiments, which illustrate, by way of example, aspects of the disclosure.